# -*- coding: utf-8 -*-
# @Time    : 2022/3/26 21:03
# @Author  : YanYajun
# 已知两个长度相等且不为空的字符串a和b，实现一个方法，判断他们的结构是否相同。

# 实例一：
# a = 'add'
# b = 'egg'
# 返回为True
#
# 需求一：a和b不需要一一对应，即只需要判断他们的结构是一样的就返回为True
# 实例二：
# a = 'apple'
# b = 'essic'
# 返回为True
#
#
# 需求二：不仅需要a和b一一对应，还需要判断他们的结构是一样才返回为True
#
# 实例一：
# a = 'apple'
# b = 'essic'
# 因为a对应的e，但是后面e又对应的是c，故返回的False

# 实例二：
# a = 'paper'
# b = 'titly'
# 返回为True

# a = "asset"
# b = "essic"
# # (a,e),(s,s),(s,s),(e,i),(t,c)  len ---> 4
# c = "aerty"
# # (a,a),(s,e),(s,r),(e,t),(t,y)
# d = "aeseu"


# (a,a),(s,e),(s,s),(e,e),(t,u)

# 1、a,b去重后，长度相等
# 2、a和b组合后，与a,b 去重后的长度相等
# def demo(a, b):
#     return len(set(a)) == len(set(b)) == len(set(zip(a, b)))
# #
# #
# print(demo(a, b))
# print(demo(a, c))
# print(demo(a, d))

# 需求二:不仅需要a和b一一对应，还需要判断他们的结构是一样才返回为True

# a = "asset"
# b = "essac"
#
# c = "esstc"

# {'a': 'e', 'e': 'a', 's': 's', 't': 'c', 'c': 't'}
# a = "asset"
# b = "esstc"
#
# s = {}
# for k, v in zip(a, b):
#     print(k,v)
#     if not s.get(k):
#         s[k] = v
#         if k != v:
#             s[v] = k
# print(s)


# ss1={}
# ss1['a']=111
# print(ss1)
# print(ss1.get('a'))

# 实例二:
# a='apple'# b='essic
# 因为a对应的e，但是后面e又对应的是c，故返回的False
# 实例四:
# a='paper'#b=titly'#返回为True

# 1、字符串
a = ['<0112>', '<32>', '<1024*768>', '<60>', '<1>', '<100>', '<500.0>']
# 把这个列表变成字符串
# '<0112><32><1024*768>'

# 方法一
b = ''
for i in a:
    b += i
print(b)

# 方法二
print(''.join(a))
#
# # 方法三
from functools import reduce

# reduce() 要传三个参数 1、一个方法 2、数据 3、起始值
print(reduce(lambda a, b: a + b, a))
# print(reduce(str.__add__, a))



a=[1,3,5]
b=reduce(lambda x,y:x+y,a)
print('1.列表里面整数累加==:',b)#输出：1.列表里面整数累加==: 9
# 第二： 剔除不需要的字符

# a = ' ==============++++++++++++===nike@qq.com---+++++++====///==/t= '

# print(a.replace('=','').replace(' ','').replace('+','').replace('-',''))

# import re
#
# print(re.sub('[=/t +-]','', a))


# 第三个 如何拆分含有多种分隔符的字符串

# f = 'a,s\td/ffl/kf,kl/df\tl/kdj/fl;dskf;ljdsl;jds;lj;ldj'

# 方法一
import re

# b = re.sub('[,\t;]', '/', f)
# print(b.split('/'))

# 方法二
# a = ['a,s\td/ffl/kf,kl/df\tl/kdj/fl;dskf;ljdsl;jds;lj;ldj']

# print(a[0].split(','))
# b = []
#
# tuple(map(lambda x: b.extend(x.split(',')), a))
# a = b
# print(b)
# b = []
# tuple(map(lambda x: b.extend(x.split('/')), a))
# a = b
# print(b)
# b = []
#
# set(map(lambda x: b.extend(x.split('\t')), a))
# a = b
# print(b)
#
# b = []
# list(map(lambda x: b.extend(x.split(';')), a))
# print(b)

# def demo(a, seps):
#     a = [a]
#     for sep in seps:
#         b = []
#         list(map(lambda x: b.extend(x.split(sep)), a))
#         print(b)
#         a = b
#     return a


# a = f
# seps = ';/,\t'
# demo(a,seps)
# 方法三
from functools import reduce

a = 'a,s\td/ffl/kf,kl/df\tl/kdj/fl;dskf;ljdsl;jds;lj;ldj'

# print(a.split(','))

# c = reduce(lambda k,v:sum(map(lambda ss: ss.split(v), k),[]),';/,\t',[a])
#
# print(c)


# def demo(k, v):
#     print(sum(map(lambda ss: ss.split(v), k),[]))


# 1、一维列表 2、二位列表

# a = [1, 2, 3, 4, 5, 6, 78]
# b = [[12, 34, 5], [1233434, 122], [1234, 1232]]
# print(sum(b, []))
# [12, 34, 5, 1233434, 122, 1234, 1232]


# demo(a, ',')

# 'abc123xyz'  # ==> 'XYZ123ABC'
# import re

# 2016-05-23
# yyyy-mm-dd
# 05/23/2016
# mm/dd/yyyy


# 1、将多个小字符串拼接成一个大字符串
# for、join、reduce lambda() str.__add__



# 2、剔除不需要的字符
# replace、re.sub


# 3、如何拆分含有多种分隔符的字符串
# replace re.sub替换成一种 然后在split(), map()写方法完成 列表的extend,reduce(map,sum(...,[]))

